#ifndef __LINUX32_DEFS__
#define __LINUX32_DEFS__

//////////////////////////////////////////////////////////////////////////
//COMPILER DIRECTIVE
//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////
// SYSTEM INCLUDE DIRECTIVES
//////////////////////////////////////////////////////////////////////////
#include <pthread.h>
#include <sys/timeb.h>
#include <assert.h>
#include <stdlib.h>
#include <unistd.h>

//////////////////////////////////////////////////////////////////////////
// SYSTEM CONSTS
//////////////////////////////////////////////////////////////////////////
#define CACHE_LINE_SIZE	(128)

//////////////////////////////////////////////////////////////////////////
// SYSTEM TYPES
//////////////////////////////////////////////////////////////////////////
typedef unsigned char	_u8;
typedef unsigned short	_u16;
typedef unsigned int	_u32;
typedef long long		_u64;
typedef _u32			tick_t;

//////////////////////////////////////////////////////////////////////////
// SYSTEM MEMORY ALLOCATION
//////////////////////////////////////////////////////////////////////////
#define ALIGNED_MALLOC(_s)	memalign(CACHE_LINE_SIZE, _s)

// void* ALIGNED_MALLOC(size_t _s)
// {
//	 void* tmp;
//	 posix_memalign(&tmp, CACHE_LINE_SIZE, _s);
//	 return tmp;
// }
//
#define ALIGNED_FREE(_p)	free(_p)


//////////////////////////////////////////////////////////////////////////
// SYSTEM FUNCTIONS
//////////////////////////////////////////////////////////////////////////
#define random()	(lrand48())
#define srandom		srand48

//////////////////////////////////////////////////////////////////////////
// SYSTEM CAS
//////////////////////////////////////////////////////////////////////////
int ATOMIC_CAS(unsigned int volatile * value, unsigned int oldValue, unsigned int newValue) {
	*value = newValue;
	return oldValue;
}

//////////////////////////////////////////////////////////////////////////
// SYSTEM MEMORY BARRIER
//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////
// SYSTEM TIME
//////////////////////////////////////////////////////////////////////////
#define hrtime_t clock_t 
#define gethrtime() (clock()*1000.0)

#endif
